There are a variety of software standards and products, which are used to connect to databases. One example is Java Database Connectivity (JDBC), which is an Application Programming Interface (API) for the Java programming language that defines how a client may access a database. Since Java interpreters (Java Virtual Machines) are available for all major client platforms, JDBC allows a platform-independent database application to be written.
JDBC employs JDBC drivers, which are client-side adaptors that convert requests from Java programs to a protocol that a database management system (DBMS) can understand. To accomplish this, JDBC drivers need to be configured to the requirements of the particular DBMS. The standard JDBC approach for configuration of database drivers is to use connection and data source properties. There are at least two problems with this approach: scope of configuration, and rebuild of applications. One example of the scope of configuration problem involves configuring the trace for diagnostics. In practice, configuring the trace on each connection or data source does not always provide a scope that is large enough to catch all diagnostic information in the database driver. This happens because an application may be using many connections and many data sources.
The second problem with the standard approach of configuration relates to the need to rebuild applications. An application will typically need to be shutdown, interrupting service, so that it can be rebuilt with new configuration properties. This standard approach to configuration tightly couples the configuration of database driver properties with the application itself which can severely affect maintenance and serviceability of an application in deployment.
One solution to the scope problem is a global configuration which can be set through an API. However, since it is an API, it still requires application rebuild, interrupting service. Another solution to the scope problem is the use of global properties. This approach may resolve both the scope and the rebuild problems. Unfortunately, it introduces another problem, which is that the database driver can only be configured statically. Global properties are loaded once when the application process is started, so configuration set through global properties is set at one time only.
Existing database driver configuration solutions do not resolve all the aforementioned issues together. Accordingly, there is a need for a system and method of database driver configuration that provides a global and dynamic solution which does not require application rebuilds.